package org.itstack.state.order;

/**
 * 订单状态接口
 * 定义订单状态的基本行为规范
 * 
 * 设计原则：
 * - 接口隔离原则：只定义订单状态相关的必要方法
 * - 开闭原则：通过接口扩展新的订单状态类型
 */
public interface OrderState {
    
    /**
     * 获取状态名称
     * @return 状态名称
     */
    String getStateName();
    
    /**
     * 获取状态描述
     * @return 状态描述
     */
    String getStateDescription();
    
    /**
     * 处理订单操作
     * @param context 订单上下文
     * @param action 操作类型
     */
    void handleAction(OrderContext context, OrderAction action);
    
    /**
     * 检查是否可以执行指定操作
     * @param action 操作类型
     * @return 是否可以执行
     */
    boolean canExecuteAction(OrderAction action);
}
